<?php
/**
 * @see Zend_Form_Element_Xhtml
 */
require_once "Zend/Form/Element/Xhtml.php";

/**
 * Элемент формы, реализующий добавление множественных текстовых полей (например, для списка тегов)
 * 
 * @category Phorm
 * @package JQuery_Form_Element
 * @name /Phorm/JQuery/Form/Element/MultiText.php
 * @copyright phorm.ru
 * @since 29.01.2011
 * @author vladimir@kachalov.net
 */

class Phorm_JQuery_Form_Element_MultiText extends Zend_Form_Element_Xhtml {
	
	/**
	 * Имя метода - помощника вида
	 * @var string
	 */
	public $helper = 'multiText';
	
	/**
	 * Определяем, что значение элемента является массивом
	 * @var boolean
	 */
	protected $_isArray = true;
	
	
	/**
     * Переписываем родительский метод getValue, чтобы удалить пустые значения
     *
     * @return mixed
     */
	
    public function getValue() {
    	
        $valueFiltered = $this->_value;

        if ($this->isArray() && is_array($valueFiltered)) {
            array_walk_recursive($valueFiltered, array($this, '_filterValue'));
            foreach ($valueFiltered as $k=>$v) {
            	if($v=='') unset($valueFiltered[$k]);
            }
        } else {
            $this->_filterValue($valueFiltered, $valueFiltered);
        }

        return $valueFiltered;
    }
    
    
    /**
	 * Валидация элемента
	 *
	 * @param mixed $value
	 * @return boolean
	 */
	
	public function isValid($value) {
		
		$this->setValue($value);
        $value = $this->getValue();
        
		$translate = Zend_Controller_Front::getInstance()->getParam('bootstrap')->getResource('Translate');
		
		if((!is_array($value) || empty($value)) && $this->isRequired()) {
			$this->_messages = array($translate->_('Значение обязательно для заполнения и не может быть пустым'));
			return false;
		}
		
		return true;
	}
	
}